isn't in the way when we introduce struct grant_entry_v2.
Signed-off-by: Steven Smith <steven.smith@citrix.com>
return ret;
}
-struct grant_entry *xc_gnttab_map_table(int xc_handle, int domid, int *gnt_num)
+struct grant_entry_v1 *xc_gnttab_map_table(int xc_handle, int domid, int *gnt_num)
{
int rc, i;
struct gnttab_query_size query;
struct gnttab_setup_table setup;
unsigned long *frame_list = NULL;
xen_pfn_t *pfn_list = NULL;
- struct grant_entry *gnt = NULL;
+ struct grant_entry_v1 *gnt = NULL;
if (!gnt_num)
return NULL;
}
*gnt_num = query.nr_frames *
- (PAGE_SIZE / sizeof(struct grant_entry) );
+ (PAGE_SIZE / sizeof(struct grant_entry_v1) );
frame_list = malloc(query.nr_frames * sizeof(unsigned long));
if (!frame_list || lock_pages(frame_list, query.nr_frames *
* There should no update to the grant when domain paused
*/
static int xc_is_page_granted(int xc_handle, xen_pfn_t gpfn,
- struct grant_entry *gnttab, int gnt_num)
+ struct grant_entry_v1 *gnttab, int gnt_num)
{
int i = 0;
struct domain_mem_info minfo;
struct xc_mmu *mmu = NULL;
struct pte_backup old_ptes = {NULL, 0, 0};
- struct grant_entry *gnttab = NULL;
+ struct grant_entry_v1 *gnttab = NULL;
struct mmuext_op mops;
int gnt_num, unpined = 0;
void *old_p, *backup = NULL;
free(backup);
if (gnttab)
- munmap(gnttab, gnt_num / (PAGE_SIZE/sizeof(struct grant_entry)));
+ munmap(gnttab, gnt_num / (PAGE_SIZE/sizeof(struct grant_entry_v1)));
close_mem_info(xc_handle, &minfo);
int xc_gnttab_op(int xc_handle, int cmd,
void * op, int op_size, int count);
-struct grant_entry *xc_gnttab_map_table(int xc_handle, int domid, int *gnt_num);
+struct grant_entry_v1 *xc_gnttab_map_table(int xc_handle, int domid, int *gnt_num);
int xc_physdev_map_pirq(int xc_handle,
int domid,
#include <compat/grant_table.h>
-#define xen_grant_entry grant_entry
-CHECK_grant_entry;
-#undef xen_grant_entry
+#define xen_grant_entry_v1 grant_entry_v1
+CHECK_grant_entry_v1;
+#undef xen_grant_entry_v1
#define xen_gnttab_map_grant_ref gnttab_map_grant_ref
CHECK_gnttab_map_grant_ref;
}
-#define SHGNT_PER_PAGE (PAGE_SIZE / sizeof(grant_entry_t))
+#define SHGNT_PER_PAGE (PAGE_SIZE / sizeof(grant_entry_v1_t))
#define shared_entry(t, e) \
((t)->shared[(e)/SHGNT_PER_PAGE][(e)%SHGNT_PER_PAGE])
#define ACGNT_PER_PAGE (PAGE_SIZE / sizeof(struct active_grant_entry))
unsigned int cache_flags;
struct active_grant_entry *act;
struct grant_mapping *mt;
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
union grant_combo scombo, prev_scombo, new_scombo;
/*
domid_t dom;
struct domain *ld, *rd;
struct active_grant_entry *act;
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
s16 rc = 0;
u32 old_pin;
{
struct domain *ld, *rd;
struct active_grant_entry *act;
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
struct page_info *pg;
rd = op->rd;
struct domain *rd, struct domain *ld, grant_ref_t ref)
{
struct grant_table *rgt;
- struct grant_entry *sha;
+ struct grant_entry_v1 *sha;
union grant_combo scombo, prev_scombo, new_scombo;
int retries = 0;
struct domain *e;
struct page_info *page;
int i;
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
struct gnttab_transfer gop;
unsigned long mfn;
unsigned int max_bitsize;
__release_grant_for_copy(
struct domain *rd, unsigned long gref, int readonly)
{
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
struct active_grant_entry *act;
unsigned long r_frame;
struct domain *rd, unsigned long gref, int readonly,
unsigned long *frame)
{
- grant_entry_t *sha;
+ grant_entry_v1_t *sha;
struct active_grant_entry *act;
s16 rc = GNTST_okay;
int retries = 0;
static unsigned int max_nr_active_grant_frames(void)
{
- return (((max_nr_grant_frames * (PAGE_SIZE / sizeof(grant_entry_t))) +
+ return (((max_nr_grant_frames * (PAGE_SIZE / sizeof(grant_entry_v1_t))) +
((PAGE_SIZE / sizeof(struct active_grant_entry))-1))
/ (PAGE_SIZE / sizeof(struct active_grant_entry)));
}
int i;
/* If this sizeof assertion fails, fix the function: shared_index */
- ASSERT(sizeof(grant_entry_t) == 8);
+ ASSERT(sizeof(grant_entry_v1_t) == 8);
if ( (t = xmalloc(struct grant_table)) == NULL )
goto no_mem_0;
t->maptrack[0][i].ref = i+1;
/* Shared grant table. */
- if ( (t->shared = xmalloc_array(struct grant_entry *,
+ if ( (t->shared = xmalloc_array(struct grant_entry_v1 *,
max_nr_grant_frames)) == NULL )
goto no_mem_3;
memset(t->shared, 0, max_nr_grant_frames * sizeof(t->shared[0]));
grant_handle_t handle;
struct domain *rd;
struct active_grant_entry *act;
- struct grant_entry *sha;
+ struct grant_entry_v1*sha;
struct page_info *pg;
BUG_ON(!d->is_dying);
* [XEN]: This field is written by Xen and read by the sharing guest.
* [GST]: This field is written by the guest and read by Xen.
*/
-struct grant_entry {
+#if __XEN_INTERFACE_VERSION__ < 0x0003020a
+#define grant_entry_v1 grant_entry
+#define grant_entry_v1_t grant_entry_t
+#endif
+struct grant_entry_v1 {
/* GTF_xxx: various type and flag information. [XEN,GST] */
uint16_t flags;
/* The domain being granted foreign privileges. [GST] */
*/
uint32_t frame;
};
-typedef struct grant_entry grant_entry_t;
+typedef struct grant_entry_v1 grant_entry_v1_t;
/*
* Type of grant entry.
#ifndef __XEN_PUBLIC_XEN_COMPAT_H__
#define __XEN_PUBLIC_XEN_COMPAT_H__
-#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030209
+#define __XEN_LATEST_INTERFACE_VERSION__ 0x0003020a
#if defined(__XEN__) || defined(__XEN_TOOLS__)
/* Xen is built with matching headers and implements the latest interface. */
/* Table size. Number of frames shared with guest */
unsigned int nr_grant_frames;
/* Shared grant table (see include/public/grant_table.h). */
- struct grant_entry **shared;
+ struct grant_entry_v1 **shared;
/* Active grant table. */
struct active_grant_entry **active;
/* Mapping tracking table. */
/* Number of grant table entries. Caller must hold d's grant table lock. */
static inline unsigned int nr_grant_entries(struct grant_table *gt)
{
- return (nr_grant_frames(gt) << PAGE_SHIFT) / sizeof(grant_entry_t);
+ return (nr_grant_frames(gt) << PAGE_SHIFT) / sizeof(grant_entry_v1_t);
}
static inline unsigned int
/* How many frames are needed for the active grant table,
* given the size of the shared grant table? */
unsigned act_per_page = PAGE_SIZE / sizeof(struct active_grant_entry);
- unsigned sha_per_page = PAGE_SIZE / sizeof(grant_entry_t);
+ unsigned sha_per_page = PAGE_SIZE / sizeof(grant_entry_v1_t);
unsigned num_sha_entries = num * sha_per_page;
unsigned num_act_frames =
(num_sha_entries + (act_per_page-1)) / act_per_page;
! gnttab_transfer grant_table.h
? gnttab_unmap_grant_ref grant_table.h
? gnttab_unmap_and_replace grant_table.h
-? grant_entry grant_table.h
+? grant_entry_v1 grant_table.h
? kexec_exec kexec.h
! kexec_image kexec.h
! kexec_range kexec.h